package com.szpx.controller.XWYController;

import com.szpx.entity.XWY.XWYDenglu;
import com.szpx.service.XWYDengluService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.DigestUtils;
import org.springframework.web.bind.annotation.*;

import java.util.HashMap;
import java.util.Map;

@RestController
@RequestMapping("/xwy/register")
public class XWYZhuceController {

    @Autowired
    private XWYDengluService xwyDengluService;

    @GetMapping("/check-username")
    public Map<String, Object> checkUsername(@RequestParam String username) {
        Map<String, Object> result = new HashMap<>();
        // 注意：service.checkUsername返回true表示用户名存在，所以这里需要取反
        boolean available = !xwyDengluService.checkUsername(username);
        result.put("available", available);
        result.put("message", available ? "用户名可用" : "用户名已被使用");
        return result;
    }

    @GetMapping("/check-phone")
    public Map<String, Object> checkPhone(@RequestParam String phone) {
        Map<String, Object> result = new HashMap<>();
        // 注意：service.checkPhone返回true表示手机号存在，所以这里需要取反
        boolean available = !xwyDengluService.checkPhone(phone);
        result.put("available", available);
        result.put("message", available ? "手机号可用" : "手机号已被使用");
        return result;
    }

    @PostMapping("/submit")
    public Map<String, Object> register(@RequestBody XWYDenglu user) {
        Map<String, Object> result = new HashMap<>();
        
        try {
            // 设置创建时间
            user.setCreateTime(new java.util.Date());
            
            // 参数校验
            if (user == null || user.getUsername() == null || user.getPassword() == null || user.getPhone() == null) {
                result.put("success", false);
                result.put("message", "请填写完整的注册信息");
                return result;
            }
            
            // 检查用户名是否已存在
            if (xwyDengluService.checkUsername(user.getUsername())) {
                result.put("success", false);
                result.put("message", "用户名已被使用");
                return result;
            }

            // 检查手机号是否已存在
            if (xwyDengluService.checkPhone(user.getPhone())) {
                result.put("success", false);
                result.put("message", "手机号已被使用");
                return result;
            }

            // 对密码进行MD5加密
            String md5Password = DigestUtils.md5DigestAsHex(user.getPassword().getBytes());
            user.setPassword(md5Password);

            // 如果角色为空，设置默认角色为student
            if (user.getRole() == null || user.getRole().isEmpty()) {
                user.setRole("student");
            }

            // 注册用户
            int registerResult = xwyDengluService.register(user);

            if (registerResult > 0) {
                result.put("success", true);
                result.put("message", "注册成功");
            } else {
                result.put("success", false);
                result.put("message", "注册失败，请稍后重试");
            }
        } catch (Exception e) {
            e.printStackTrace(); // 记录异常堆栈信息
            result.put("success", false);
            result.put("message", "注册过程中发生错误: " + e.getMessage());
        }

        return result;
    }
}